import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  // 1. 插件配置
  plugins: [vue()],

  // 2. 开发服务器配置 (解决跨域和路径问题)
  server: {
    // 设置前端应用的运行端口 (可选，默认3000或5173)
    // port: 5173,

    // 配置 API 代理
    proxy: {
      // 匹配所有以 /api 开头的请求
      // 例如：前端请求 /api/templates/papercut/1
      '/api': {
        // 目标地址：您的 Spring Boot 后端地址
        target: 'http://localhost:8080',

        // 必须开启，支持跨域
        changeOrigin: true,

        // (可选但推荐) 配置 WebSocket 代理，如果您的后端需要 WebSocket
        ws: true,

        // **路径重写**：不需要！
        // 因为您的后端 Controller 路径已包含 /api (如 @RequestMapping("/api/templates"))
        // 如果后端路径是 /templates，则需要 rewrite: (path) => path.replace(/^\/api/, ''),
        // 但我们保持 /api 转发给后端
      },

      // 额外配置：处理图片或静态资源 URL
      // 您的后端返回的 image_url 可能是 "/images/..." 或 "/yangzhou_authors/..."
      // 如果后端图片直接通过 http://localhost:8080 提供静态资源服务，
      // 您可能需要将这些路径也代理过去。
      '/shaanbei_authors': {
        target: 'http://localhost:8080',
        changeOrigin: true,
      },
      '/guangling_authors': {
        target: 'http://localhost:8080',
        changeOrigin: true,
      },
      '/yangzhou_authors': {
        target: 'http://localhost:8080',
        changeOrigin: true,
      },
      '/hui': {
        target: 'http://localhost:8080',
        changeOrigin: true,
      },
    },
  },

  // 3. 路径解析配置 (简化导入，例如 @/components)
  resolve: {
    alias: {
      // 设置 @ 符号指向 src 目录
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
})
